import java.util.*;

public class Partida extends Thread
{
	String nombre;
	LinkedList<Jugador> jugadores;

	Partida(String nombre)
	{
		this.nombre = nombre;
		this.jugadores = new LinkedList<Jugador>();
	}

	String getNombre()
	{
		return nombre;
	}

	void setNombre(String nombre)
	{
		this.nombre = nombre;
	}

	void modificar(Teclado teclado, String nombre)
	{
		Jugador jugadorActual = null;
		ListIterator<Jugador> listIteratorJugador = this.jugadores.listIterator();
		while (listIteratorJugador.hasNext())
		{
			jugadorActual = listIteratorJugador.next();
			if (jugadorActual.nombre.compareTo(nombre) == 0)
			{
				if (teclado.izquierda)
					jugadorActual.getNave().girarIzquierda();
				if (teclado.derecha)
					jugadorActual.getNave().girarDerecha();
				if (teclado.adelante)
					jugadorActual.getNave().acelerar();
				if (teclado.atras)
					jugadorActual.getNave().voltear();
				return;
			}
		}
	}

	void actualizar()
	{
		Jugador jugadorActual = null;
		ListIterator<Jugador> listIteratorJugador = this.jugadores.listIterator();
		while (listIteratorJugador.hasNext())
		{
			jugadorActual = listIteratorJugador.next();
			jugadorActual.getNave().nuevaPosicion();
		}
	}

	void enviarEstado()
	{
		Jugador jugadorActual = null;
		ListIterator<Jugador> listIteratorJugador = this.jugadores.listIterator();
		while (listIteratorJugador.hasNext())
		{
			jugadorActual = listIteratorJugador.next();
			jugadorActual.enviarEstado();
		}
	}


	public void run()
	{
		while(this.jugadores.size() > 0)
		{
			actualizar();
			enviarEstado();
			try
			{
				Thread.sleep(50);
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	}
}